In real-time software systems where the number of components is greater than the number of available processors, components compete for processing time and scheduling of components is required reliably and fast. In the present context, any software system in which the time, at which an output is produced, is essential is referred to as a real-time software system. The lag from the input time of a real-time software system to its output time, i.e. the delay, must be sufficiently small for acceptable timeliness. A hard real-time software system has to respond to an externally generated input within a bounded time interval. A software system in the present context is typically constructed from a number of interconnected components and the only interaction between components is through their interfaces, components do not share state information.
In this kind of system a scheduler assigns processing intervals to the components in such a way that the real-time constraints on system level are met. The scheduling of components consists of two phases that are repeated continuously over time. First the set of schedulable components is determined and then, from this set and according to some prioritisation scheme, a subset of components is selected that will actually be executed on the processors. During execution, one component is executed on each processor.
There exist a number of methods to define when components are schedulable in systems of the type described above:
Time driven scheduleability, here a component is schedulable when a certain amount of time has elapsed.
Algorithmic-time-driven, this method is similar to the time driven method, but instead of real-time a virtual time axis is used.
Data driven, here a component is schedulable when a certain amount of input data is available.
Event driven, this method is a specialisation of data driven, the data is either a Boolean variable that becomes true, or a set of Boolean variables for which a certain Boolean expression becomes true.
Demand driven, in this method components are schedulable when the consumer of output data from a specific component demands a certain amount of data.
In stream-based systems, systems where the input is a time dependent stream of data elements, it is especially important that the lag from the input time to output time is small. Further it is important that a component only is scheduled when the data at the input is ready, whereby the processor utilisation is maximised.
WO 9525313 describes an implementation of the synchronization of a plurality of data streams during processing. A schedule criterion is determined by a trigger condition, e.g. in terms of the state of the streaming processes. Such state is then again related to time marks of the streams and the system time. This document does not solve the problem of executing streaming and control of streaming using one processor by performing scheduling of components.